/**
 * 版权所有：版权所有(C) 2016，卓信金控
 * 系统名称：FOL
 * @ClassName: CustomXWPFDocument
 * 模块名称：
 * @Description: 内容摘要：
 * @author Guanxu
 * @date 2018年6月4日
 * @version V1.0
 * history:
 * 1、2018年6月4日 Guanxu 创建文件
 */
package com.zx.sframe.util.poi;

import java.io.IOException;
import java.io.InputStream;

import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlToken;
import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;

/**
 * 类 名 称:CustomXWPFDocument
 *
 * 内容摘要: 
 *
 * 作 者:Baisong
 */
public class CustomXWPFDocument extends XWPFDocument
{

	/**
	 * CustomXWPFDocument
	 * @param in
	 * @throws IOException
	 */
    public CustomXWPFDocument(InputStream in) throws IOException
    {
        super(in);
    }

    /**
     * CustomXWPFDocument
     * @param pkg
     * @throws IOException
     */
    public CustomXWPFDocument(OPCPackage pkg) throws IOException
    {
        super(pkg);
    }

    /**
     * 
      * @Title: createPicture
      * @Description: createPicture
      * @param @param blipId
      * @param @param id
      * @param @param width
      * @param @param height
      * @param @param paragraph
      * @return void
      * @author: wangyihan
      * @time: 2020年9月17日 下午1:19:54
      * history:
      * 1、2020年9月17日 下午1:19:54 wangyihan 创建方法
      *
     */
    public void createPicture(String blipId, int id, int width, int height, XWPFParagraph paragraph)
    {
        final int EMU = 9525;
        width *= EMU;
        height *= EMU;
        // String blipId =
        // getAllPictures().get(id).getPackageRelationship().getId();

        // CTInline inline =
        // createParagraph().createRun().getCTR().addNewDrawing().addNewInline();
        // 给段落插入图片
        CTInline inline = paragraph.createRun().getCTR().addNewDrawing().addNewInline();

        String picXml = "" + "<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">" + "   <a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">" + "      <pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">" + "         <pic:nvPicPr>" + "            <pic:cNvPr id=\"" + id + "\" name=\"Generated\"/>" + "            <pic:cNvPicPr/>" + "         </pic:nvPicPr>" + "         <pic:blipFill>" + "            <a:blip r:embed=\"" + blipId + "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>" + "            <a:stretch>" + "               <a:fillRect/>" + "            </a:stretch>" + "         </pic:blipFill>" + "         <pic:spPr>" + "            <a:xfrm>" + "               <a:off x=\"0\" y=\"0\"/>" + "               <a:ext cx=\"" + width + "\" cy=\"" + height + "\"/>" + "            </a:xfrm>" + "            <a:prstGeom prst=\"rect\">" + "               <a:avLst/>" + "            </a:prstGeom>" + "         </pic:spPr>" + "      </pic:pic>" + "   </a:graphicData>" + "</a:graphic>";

        // CTGraphicalObjectData graphicData =
        // inline.addNewGraphic().addNewGraphicData();
        XmlToken xmlToken = null;
        try
        {
            xmlToken = XmlToken.Factory.parse(picXml);
        }
        catch (XmlException xe)
        {
            xe.printStackTrace();
        }
        inline.set(xmlToken);
        // graphicData.set(xmlToken);

        inline.setDistT(0);
        inline.setDistB(0);
        inline.setDistL(0);
        inline.setDistR(0);

        CTPositiveSize2D extent = inline.addNewExtent();
        extent.setCx(width);
        extent.setCy(height);

        CTNonVisualDrawingProps docPr = inline.addNewDocPr();
        docPr.setId(id);
        docPr.setName("Picture " + id);
        docPr.setDescr("Generated");
    }
}
